package login_tool

import (
	"golang.org/x/net/context"
	"log"
	"project05_web/src/global"
	"time"
)

func Ip_loginfail(Ip string) {
	var key string = Ip
	redis := global.RedisDb
	ctx := context.Background()
	n, err := redis.Exists(ctx, key).Result()
	if err != nil {
		log.Println("find exist user Key error :", err)
	}

	if n == 0 {
		redis.Set(ctx, key, 1, 25*time.Minute)
	}
	num, _ := redis.Get(ctx, key).Int()
	v1, _ := redis.TTL(ctx, key).Result()
	redis.Set(ctx, key, num+1, v1*time.Second)
}

func Ip_is_Offsite(ip_now string, ip_last string) bool {
	if ip_now != ip_last {
		return false
	}
	return true
}

// 接口限流
func Api_limt(IP string, api string, times int) bool { //如果当前Ip 超过了我们规定对API的访问次数,那么执行Ip封禁策略
	var key string = IP + api
	redis := global.RedisDb
	ctx := context.Background()
	n, err := redis.Exists(ctx, key).Result()
	if err != nil {
		log.Println("find exist user Key error :", err)
	}

	if n == 0 {
		redis.Set(ctx, key, 1, 25*time.Minute)
		return true
	}
	num, _ := redis.Get(ctx, key).Int()
	v1, _ := redis.TTL(ctx, key).Result()
	if num > times { //做限制
		return false
	} else {
		redis.Set(ctx, key, num+1, v1*time.Second)
	}
	return true
}
